package com.jvxb.manage.livable.controller;

import com.jvxb.manage.livable.entity.RedisChangeData;
import com.jvxb.manage.livable.service.RedisChangeDataService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import com.jvxb.common.web.RespMsg;

/**
 * @author jvxb
 * @since 2022-02-11
 */
@RestController
@RequestMapping("/dataAlter/redis/change/data/v1")
public class RedisChangeDataController {

    @Autowired
    private RedisChangeDataService redisChangeDataService;

    @PostMapping("/add")
    public RespMsg add(@RequestBody RedisChangeData redisChangeData) {
        redisChangeDataService.save(redisChangeData);
        return RespMsg.ok();
    }

    @PostMapping("/delete")
    public RespMsg delete(@RequestBody RedisChangeData redisChangeData) {
        redisChangeDataService.removeById(redisChangeData);
        return RespMsg.ok();
    }

    @PostMapping("/update")
    public RespMsg update(@RequestBody RedisChangeData redisChangeData) {
        redisChangeDataService.saveOrUpdate(redisChangeData);
        return RespMsg.ok();
    }

    @GetMapping("/getById")
    public RespMsg getById(Long id) {
        RedisChangeData redisChangeData = redisChangeDataService.getById(id);
        return RespMsg.ok(redisChangeData);
    }

    @GetMapping("/list")
    public RespMsg list() {
        List<RedisChangeData> list = redisChangeDataService.list(null);
        return RespMsg.ok(list);
    }

    @GetMapping("listPage")
    public RespMsg listPage(@RequestParam Long workOrderId,
                            @RequestParam(defaultValue = "10") Integer size,
                            @RequestParam(defaultValue = "1") Integer current) {
        IPage<RedisChangeData> redisChangeDataIPage = new Page<>(current, size);
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq(RedisChangeData.WORK_ORDER_ID, workOrderId);
        redisChangeDataService.page(redisChangeDataIPage, wrapper);
        return RespMsg.ok(redisChangeDataIPage);
    }
}
